home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / C / Applications / Portable Patmos / usr / include / netiso / iso.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-08  |  6.5 KB  |  191 lines  |  [TEXT/R*ch]

  1. /*-
  2.  * Copyright (c) 1991 The Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  * 3. All advertising materials mentioning features or use of this software
  14.  *    must display the following acknowledgement:
  15.  *    This product includes software developed by the University of
  16.  *    California, Berkeley and its contributors.
  17.  * 4. Neither the name of the University nor the names of its contributors
  18.  *    may be used to endorse or promote products derived from this software
  19.  *    without specific prior written permission.
  20.  *
  21.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31.  * SUCH DAMAGE.
  32.  *
  33.  *    from: @(#)iso.h    7.6 (Berkeley) 5/6/91
  34.  *    $Id: iso.h,v 1.3 1993/05/20 05:27:14 cgd Exp $
  35.  */
  36.  
  37. #ifndef _NETISO_ISO_H_
  38. #define _NETISO_ISO_H_
  39.  
  40. /***********************************************************
  41.         Copyright IBM Corporation 1987
  42.  
  43.                       All Rights Reserved
  44.  
  45. Permission to use, copy, modify, and distribute this software and its 
  46. documentation for any purpose and without fee is hereby granted, 
  47. provided that the above copyright notice appear in all copies and that
  48. both that copyright notice and this permission notice appear in 
  49. supporting documentation, and that the name of IBM not be
  50. used in advertising or publicity pertaining to distribution of the
  51. software without specific, written prior permission.  
  52.  
  53. IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  54. ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  55. IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  56. ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  57. WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  58. ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  59. SOFTWARE.
  60.  
  61. ******************************************************************/
  62.  
  63. /*
  64.  * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
  65.  */
  66.  
  67. /*
  68.  *    Return true if this is a multicast address
  69.  *    This assumes that the bit transmission is lsb first. This 
  70.  *    assumption is valid for 802.3 but not 802.5. There is a
  71.  *    kludge to get around this for 802.5 -- see if_lan.c
  72.  *    where subnetwork header is setup.
  73.  */
  74. #define    IS_MULTICAST(snpa)\
  75.     ((snpa)[0] & 0x01)
  76.     
  77. /*
  78.  * Protocols
  79.  */
  80. #define    ISOPROTO_TP0    25        /* connection oriented transport protocol */
  81. #define    ISOPROTO_TP1    26        /* not implemented */
  82. #define    ISOPROTO_TP2    27        /* not implemented */
  83. #define    ISOPROTO_TP3    28        /* not implemented */
  84. #define    ISOPROTO_TP4    29        /* connection oriented transport protocol */
  85. #define    ISOPROTO_TP        ISOPROTO_TP4     /* tp-4 with negotiation */
  86. #define    ISOPROTO_CLTP    30        /* connectionless transport (not yet impl.) */
  87. #define    ISOPROTO_CLNP    31        /* connectionless internetworking protocol */
  88. #define    ISOPROTO_X25    32        /* cons */
  89. #define    ISOPROTO_INACT_NL    33    /* inactive network layer! */
  90. #define    ISOPROTO_ESIS    34        /* ES-IS protocol */
  91. #define    ISOPROTO_INTRAISIS    35        /* IS-IS protocol */
  92.  
  93. #define    ISOPROTO_RAW    255        /* raw clnp */
  94. #define    ISOPROTO_MAX    256
  95.  
  96. #define    ISO_PORT_RESERVED        1024
  97. #define    ISO_PORT_USERRESERVED    5000
  98. /*
  99.  * Port/socket numbers: standard network functions
  100.  * NOT PRESENTLY USED
  101.  */
  102. #define    ISO_PORT_MAINT        501
  103. #define    ISO_PORT_ECHO        507
  104. #define    ISO_PORT_DISCARD    509
  105. #define    ISO_PORT_SYSTAT        511
  106. #define    ISO_PORT_NETSTAT    515
  107. /*
  108.  * Port/socket numbers: non-standard application functions
  109.  */
  110. #define ISO_PORT_LOGIN        513
  111. /*
  112.  * Port/socket numbers: public use
  113.  */
  114. #define ISO_PORT_PUBLIC        1024        /* high bit set --> public */
  115.  
  116. /*
  117.  *    Network layer protocol identifiers
  118.  */
  119. #define ISO8473_CLNP    0x81
  120. #define    ISO9542_ESIS    0x82
  121. #define ISO9542X25_ESIS    0x8a
  122. #define ISO10589_ISIS        0x83
  123.  
  124.  
  125. #ifndef IN_CLASSA_NET
  126. #include "../netinet/in.h"
  127. #endif IN_CLASSA_NET
  128.  
  129.  
  130.  
  131. /* The following looks like a sockaddr
  132.  * to facilitate using tree lookup routines */
  133. struct iso_addr {
  134.     u_char    isoa_len;                        /* length (in bytes) */
  135.     char    isoa_genaddr[20];                /* general opaque address */
  136. };
  137.  
  138. struct sockaddr_iso {
  139.     u_char                 siso_len;            /* length */
  140.     u_char                 siso_family;        /* family */
  141.     u_char                siso_plen;            /* presentation selector length */
  142.     u_char                siso_slen;            /* session selector length */
  143.     u_char                siso_tlen;            /* transport selector length */
  144.     struct     iso_addr    siso_addr;            /* network address */
  145.     u_char                siso_pad[6];        /* space for gosip v2 sels */
  146.                                             /* makes struct 32 bytes long */
  147. };
  148. #define siso_nlen siso_addr.isoa_len
  149. #define siso_data siso_addr.isoa_genaddr
  150.  
  151. #define TSEL(s) ((caddr_t)((s)->siso_data + (s)->siso_nlen))
  152.  
  153. #define SAME_ISOADDR(a, b) \
  154.     (bcmp((a)->siso_data, (b)->siso_data, (unsigned)(a)->siso_nlen)==0)
  155. /*
  156.  * The following are specific values for siso->siso_data[0],
  157.  * otherwise known as the AFI:
  158.  */
  159. #define    AFI_37        0x37    /* bcd of "37" */
  160. #define AFI_OSINET    0x47    /* bcd of "47" */
  161. #define AFI_RFC986    0x47    /* bcd of "47" */
  162. #define    AFI_SNA        0x00    /* SubNetwork Address; invalid really...*/
  163.  
  164. #ifdef KERNEL
  165.  
  166. extern int iso_netmatch();
  167. extern int iso_hash(); 
  168. extern int iso_addrmatch();
  169. extern struct iso_ifaddr *iso_iaonnetof();
  170. extern    struct domain isodomain;
  171. extern    struct protosw isosw[];
  172.  
  173. #else
  174. /* user utilities definitions from the iso library */
  175.  
  176. #include <sys/cdefs.h>
  177.  
  178. __BEGIN_DECLS
  179. struct iso_addr *iso_addr __P((const char *));
  180. char *iso_ntoa __P((const struct iso_addr *));
  181.  
  182. /* THESE DON'T EXIST YET */
  183. struct hostent *iso_gethostbyname(), *iso_gethostbyaddr();
  184. __END_DECLS
  185.  
  186. #endif /* KERNEL */
  187.  
  188. #define _offsetof(t, m) ((int)((caddr_t)&((t *)0)->m))
  189.  
  190. #endif /* !_NETISO_ISO_H_ */
  191.